package com.eedi.framework.user.dal.dataobject;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.eedi.framework.common.enums.CertTypeEnum;
import com.eedi.framework.common.enums.CommonStatusEnum;
import com.eedi.framework.common.enums.SexEnum;
import com.eedi.framework.common.enums.UserTypeEnum;
import com.eedi.framework.org.core.db.OrgInfoBaseDO;
import lombok.*;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;

import java.time.LocalDateTime;
import java.util.Date;

@TableName(value = "org_user", autoResultMap = true)
@Data
@EqualsAndHashCode(callSuper = true)
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class OrgUserDO extends OrgInfoBaseDO {
    /**
     * 成员ID
     */
    @TableId(type = IdType.ASSIGN_UUID)
    String orgUserId;

    //==========社会信息=================
    /**
     * 真实姓名
     */
     String orgUserName;

    /**
     * 用户头像
     */
    String orgUserAvatar;

    /**
     * 证件类型
     */
    CertTypeEnum orgUserCertType;

    /**
     * 用户证件号码
     */
    String orgUserCertNo;
    /**
     * 性别
     */
    SexEnum orgUserSex;

    /**
     * 生日
     */
    Date orgUserBirthday;

    //===============账号信息============

    /**
     * 用户登录名
     */
     String orgUserLoginId;

    /**
     * 手机
     */
     String orgUserMobile;

    /**
     * 加密后的密码
     *
     * 因为目前使用 {@link BCryptPasswordEncoder} 加密器，所以无需自己处理 salt 盐
     */
     String orgUserPassword;
    /**
     * 用户类型
     */
     UserTypeEnum orgUserAccountType;

    /**
     * 状态
     */
     CommonStatusEnum orgUserAccountStatus;

    /**
     * 用户所在部门ID
     */
    String orgDeptId;

    /**
     * 最后登录IP
     */
     String orgUserAccountLoginIp;
    /**
     * 最后登录时间
     */
     LocalDateTime orgUserAccountLoginDate;

}
